package main

import "fmt"

// 数组：长度固定
func main() {
	// 格式一：空声明
	arr := [10]int{} // 等于：var arr4 [5]int
	fmt.Println(length(arr))

	// 格式二：直接声明
	arr2 := [10]int{1, 2, 3, 4, 5}
	fmt.Println(arr2)

	// 格式三：省略长度，编译器自动推断
	arr3 := [...]int{1, 2, 3, 4, 5}
	fmt.Println(arr3)

	// new() 函数，创建一块内存空间，返回一个指针变量
	arr4 := new([10]int)
	(*arr4)[0] = 1
	fmt.Println(*arr4)

	// make() 函数（数组无法使用），创建一块内存空间，返回一个切片(参数一：切片数据类型。参数二：切片长度。参数三：切片容量)
	arr5 := make([]int, 10, 20)
	fmt.Println(arr5, len(arr5), cap(arr5))

}

// 数组类型的参数，入参必须与其长度相等，否则报错
func length(arr [10]int) int {
	return len(arr)
}
